#ifndef CAMERA_HEADER_VIZMF_PROJECT
#define CAMERA_HEADER_VIZMF_PROJECT

#include "src/core/generic/vector3.h"

/*
  VizMF Camera class

  Defines a camera used to view the scene
*/

class Camera {
public:
  typedef Vector3 point_type;

  Camera(point_type pos = point_type(), point_type look = point_type())
    : position_(pos), look_(look) {}

  const point_type& position() const { return position_; }
  void setPosition(const point_type& pos) { position_ = pos; }

  const point_type& look() const { return look_; }
  void setLook(const point_type& look) { look_ = look; }

  const point_type& normal() const { return normal_; }
  void setNormal(const point_type& normal) { normal_ = normal; }

private:
  point_type position_;	// position to locate
  point_type look_;	// direction to look
  point_type normal_; // normal that defdines rotation along position - look vector
};

#endif // CAMERA_H
